package cn.iocoder.yudao.module.lowcode.core.event;

import lombok.Data;
import org.springframework.context.ApplicationEvent;

/**
 * 表配置变更事件
 *
 * @author 芋道源码
 */
@Data
public class TableConfigChangeEvent extends ApplicationEvent {

    /**
     * 表名
     */
    private String tableName;

    /**
     * 数据源ID
     */
    private Long dataSourceId;

    /**
     * 表注释
     */
    private String tableComment;

    /**
     * 变更类型
     */
    private ChangeType changeType;

    /**
     * 是否启用自动生成Magic API
     */
    private Boolean autoGenerateApi;

    public TableConfigChangeEvent(Object source, String tableName, Long dataSourceId, String tableComment, 
                                 ChangeType changeType, Boolean autoGenerateApi) {
        super(source);
        this.tableName = tableName;
        this.dataSourceId = dataSourceId;
        this.tableComment = tableComment;
        this.changeType = changeType;
        this.autoGenerateApi = autoGenerateApi;
    }

    /**
     * 变更类型枚举
     */
    public enum ChangeType {
        /**
         * 表结构创建
         */
        CREATE,
        
        /**
         * 表结构更新
         */
        UPDATE,
        
        /**
         * 表结构删除
         */
        DELETE,
        
        /**
         * 字段变更
         */
        FIELD_CHANGE
    }
}